﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CharacterCreation.Data.Models {
    [Serializable]
    public class CharacterXPCoupling : BasePersistanceClass {

        /// <summary>
        /// Gets or sets the RacialXP
        /// </summary>
        public int RacialXP {
            get { return _RacialXP; }
            set {
                _RacialXP = value;
                RaisePropertyChanged("RacialXP");
                RaisePropertyChanged("TotalXP");
                RaisePropertyChanged("Score");
            }
        }
        private int _RacialXP;


        /// <summary>
        /// Gets or sets the ProfessionalXP
        /// </summary>
        public int ProfessionalXP {
            get { return _ProfessionalXP; }
            set {
                _ProfessionalXP = value;
                RaisePropertyChanged("ProfessionalXP");
                RaisePropertyChanged("TotalXP");
                RaisePropertyChanged("Score");
            }
        }
        private int _ProfessionalXP;


        /// <summary>
        /// Gets or sets the XP
        /// </summary>
        public int XP {
            get { return _XP; }
            set {
                _XP = value;
                RaisePropertyChanged("XP");
                RaisePropertyChanged("TotalXP");
                RaisePropertyChanged("Score");
            }
        }
        private int _XP;


        /// <summary>
        /// Gets or sets the MiscellaneousXP
        /// </summary>
        public int MiscellaneousXP {
            get { return _MiscellaneousXP; }
            set {
                _MiscellaneousXP = value;
                RaisePropertyChanged("MiscellaneousXP");
                RaisePropertyChanged("TotalXP");
                RaisePropertyChanged("Score");
            }
        }
        private int _MiscellaneousXP;


        /// <summary>
        /// Gets or sets the MiscellaneousXPReason
        /// </summary>
        public string MiscellaneousXPReason {
            get { return _MiscellaneousXPReason; }
            set {
                _MiscellaneousXPReason = value;
                RaisePropertyChanged("MiscellaneousXPReason");
            }
        }
        private string _MiscellaneousXPReason;


        /// <summary>
        /// Gets or sets the BoughtFrom
        /// </summary>
        public string BoughtFrom {
            get { return _BoughtFrom; }
            set {
                _BoughtFrom = value;
                RaisePropertyChanged("BoughtFrom");
            }
        }
        private string _BoughtFrom;

        /// <summary>
        /// The total xp spent increasing this skill, statistic or special
        /// </summary>
        public int TotalXP {
            get {
                return RacialXP + ProfessionalXP + XP + MiscellaneousXP; 
            }
        }
    }
}
